﻿using browser4gp.core.Style;
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Linq;
using System.Text;
using System.Windows;
using wpf4gp.Helpers;

namespace browser4gp.core.Plugin
{

    /// <summary>
    /// Plugin di base per il browser
    /// </summary>
    public abstract class BaseBrowserPlugin : NotificationObject, IBrowserPlugin
    {

        /// <summary>
        /// Costruttore di base
        /// </summary>
        /// <param name="mainStyle">Stile di riferimento</param>
        [ImportingConstructor]
        public BaseBrowserPlugin([Import("MainWindowStyle")] MainWindowStyle mainStyle)
        {
            MainWindowStyle = mainStyle;
        }



        /// <summary>
        /// Stile della finestra principale del browser
        /// </summary>
        public MainWindowStyle MainWindowStyle { get; private set; }


        /// <summary>
        /// Elemento della status bar
        /// </summary>
        public virtual UIElement StatusBarElement
        {
            get { return null; }
            protected set { }
        }

        /// <summary>
        /// Elemento della toolbar
        /// </summary>
        public virtual UIElement ToolBarElement
        {
            get { return null; }
            protected set { }
        }

        /// <summary>
        /// Ripulisce i dati
        /// </summary>
        public virtual void Dispose()
        {
        }

        /// <summary>
        /// Esegue le operazioni quando richiamato dal JavaScript
        /// </summary>
        /// <param name="methodName">Nome del metodo richiamato dal JavaScript</param>
        /// <param name="args">Parametri passati dal javascript</param>
        /// <returns>Esito dell'operazione (qualsiasi cosa, volendo anche un json)</returns>
        public abstract string RunFromJavascript(string methodName, List<string> args);


    }


}
